#include "head.h"
#include "../include/teacher.h"
#include "../include/head.h"

// 学生登录界面
void test(void)
{
    u_list *list = init_register();
    F_scanf(list, FILE1);
    int d;
    printf("请选择\t1:登录\t2:注册\n");
    scanf("%d", &d);
    user_node *p;
    // 登录
    if (d == 1)
    {
        // printf("%s\n", list->next->data.name);
        int id;
        char password[128];
        printf("请输入你的账号\n");
        scanf("%d", &id);

        p = find_node_id(list, id);
        if (NULL == p)
        {
            printf("id输入错误\n");
            return;
        }

        else if (id == p->data.id)
        {
            printf("你的账号:%d\n", p->data.id);
            int num = 3;

            while (num != 0)
            {
                printf("请输入你的密码\n");
                scanf("%s", password);
                p = find_node_password(list, password);
                if (NULL != p)
                {
                    printf("密码正确，登录成功\n");
                    menu_student(p->data);  
                    break;
                }
                else
                {
                    printf("密码不正确，请重新输入\n");

                }
                num--;
                printf("你还有%d次机会\n", num);
            }

        }
    }
    // 注册
    else if (d == 2)
    {
        int num = 3;
        while (num != 0)
        {
            int id;
            printf("请输入你的账号\n");
            scanf("%d", &id);
            user_node *p = find_node_id(list, id); // 检测账号是否存在
            if (NULL != p)      
            {
                printf("id已存在,请重新输入\n");
            }
            else
            {
                printf("账号无人注册\n");
                user_data data_1;
                // 创建账号
                data_1.id = id;

                printf("请输入你的密码\n");
                scanf("%s", data_1.password);

                printf("请输入你的姓名\n");
                scanf("%s", data_1.name);

                insert_node(list, data_1, 1); // 插入到list链表中

                F_print(list, FILE1); // 写入到文件
                
                printf("注册成功\n");
                print_register(list);
                return test();
                
            }
            num--;
            printf("你还有%d次机会\n", num);
        }
    }
    else if(d<0||d>2)
    {
        printf("输入有误\n");
        return;
    }
}
// 登录界面选项
void menu_login()
{
    printf("欢迎来到学校管理系统\n");
    printf("请选择身份 1:学生\t2:教师\n");
    int d;
    scanf("%d", &d);
    if (d == 1)
    {
        test();
    }
    else if (d == 2)
    {
        teacher_login();
    }
    else
    {
        printf("输入有误\n");
    }
}
// 学生菜单
void menu_student(user_data data)
{
    printf("欢迎来到学生管理系统\n");
    int n;
    while (1)
    {
        printf("请选择你要进入的程序\n");
        printf("1:查看信息 2:课表 3:小工具 4:留言 5:退出\n");
        scanf("%d", &n);
        if (n < 1 || n > 5)
        {
            printf("输入无效\n");
        }
        else if (n == 1)
        {   
            printf("注意! 个人信息不可修改(特殊情况需修改可寻找老师！)\n");
            printf("账号：%d\t",data.id);
            printf("密码：%s\t",data.password);
            printf("姓名：%s\n",data.name);
        }
        else if (n == 2)
        {
            class();
        }
        else if (n == 3)
        {
            tool();
        }
        else if (n == 4)
        {
            leave();
        }
        else if (n == 5)
        {
            printf("您已退出\n");
            break;
        }
    }
}
// 教师登录界面
void teacher_login(void)
{
    t_list *list = (t_list *)malloc(sizeof(t_list));
    f_scanf(list, TEACHERS);
    int d;
    printf("请选择\t1:登录\t2:注册\n");
    scanf("%d", &d);
    // 登录
    if (d == 1)
    {
        // printf("%s\n", list->next->data.name);
        int id;
        char password[128];
        printf("请输入你的账号\n");
        scanf("%d", &id);

        t_node *p = find_teacher_node_id(list, id);
        if (NULL == p)
        {
            printf("id输入错误\n");
            return;
        }

        else if (id == p->data.id)
        {
            printf("你的账号:%d\n", p->data.id);
            int num = 3;

            while (num != 0)
            {
                printf("请输入你的密码\n");
                scanf("%s", password);
                p = find_teacher_node_password(list, password);
                if (NULL != p)
                {
                    printf("密码正确，登录成功\n");
                    break;
                }
                else
                {
                    printf("密码不正确，请重新输入\n");
                }
                num--;
                printf("你还有%d次机会\n", num);
            }
        }
    }
    // 注册
    else if (d == 2)
    {
        int num = 3;
        while (num != 0)
        {
            int id;
            printf("请输入你的账号\n");
            scanf("%d", &id);
            t_node *p = find_teacher_node_id(list, id); // 检测账号是否存在
            if (NULL != p)
            {
                printf("id已存在,请重新输入\n");
            }
            else
            {
                printf("账号无人注册\n"); // 创建账号
                t_data data_2;

                data_2.id = id;

                printf("请输入你的密码\n");
                scanf("%s", data_2.password);

                printf("请输入你的姓名\n");
                scanf("%s", data_2.name);

                insert_teacher_node(list, data_2, 0); // 插入到list链表中

                f_print(list, TEACHERS); // 写入到文件
                // print_teacher(list);//遍历链表

                printf("注册成功\n");
                return teacher_login();
                
            }
            num--;
            printf("你还有%d次机会\n", num);
        }
    }
    else if(d<0||d>2)
    {
        printf("输入有误\n");
        return;
    }
    menu_teacher();
}
// 教师菜单
void menu_teacher(void)
{
    printf("欢迎来到教师管理系统\n");
    int n;
    while (1)
    {
        printf("请选择你要进入的程序\n 1:修改学生信息\t 2:增加学生\t 3:查找学生\t 4:查看留言\t 5:删除学生\t 6:退出\n");
        scanf("%d", &n);
        if (n < 1 || n > 6)
        {
            printf("输入无效\n");
        }
        else if (n == 1)
        {
            change();
            
        }
        else if (n == 2)
        {
            add_student();
        }
        else if (n == 3)
        {
            find();
        }
        else if (n == 4)
        {
            system("cat ./data/messages.txt\n"); // 查看留言内容
    
        }
        else if (n == 5)
        {
            delete();
        }
        else if (n == 6)
        {
            printf("您已退出\n");
            break;
        }
    }
}
